[INFO] cloning repository https://github.com/AdiTiwa/HackSimulators
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AdiTiwa/HackSimulators" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdiTiwa%2FHackSimulators", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdiTiwa%2FHackSimulators'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 123f611038df9d718852c93c6451ff795d72dfc4
[INFO] fixing AdiTiwa/HackSimulators against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAdiTiwa%2FHackSimulators" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AdiTiwa/HackSimulators
[INFO] finished tweaking git repo https://github.com/AdiTiwa/HackSimulators
[INFO] tweaked toml for git repo https://github.com/AdiTiwa/HackSimulators written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AdiTiwa/HackSimulators on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AdiTiwa/HackSimulators already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pest_derive v2.8.5
[INFO] [stderr]   Downloaded pest_meta v2.8.5
[INFO] [stderr]   Downloaded pest_generator v2.8.5
[INFO] [stderr]   Downloaded euclid v0.22.13
[INFO] [stderr]   Downloaded pest v2.8.5
[INFO] [stderr]   Downloaded time v0.3.46
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e
[INFO] running `Command { std: "docker" "start" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]     Checking hacksimulators v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `KeyboardInterface`, `MemoryKeyboard`, `Memory`, `RAM`, `ROM`, `SCREEN_OFFSET`, `SCREEN_SIZE`, and `SubMemory`
[INFO] [stdout]  --> src/cpu/cpu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     KeyboardInterface, MemInterface, Memory, MemoryKeyboard, RAM, ROM, SCREEN_OFFSET, SCREEN_SIZE, SubMemory,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^                ^^^^^^  ^^^^^^^^^^^^^^  ^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyboardInterface`, `MemoryKeyboard`, `Memory`, `RAM`, `ROM`, `SCREEN_OFFSET`, `SCREEN_SIZE`, and `SubMemory`
[INFO] [stdout]  --> src/cpu/cpu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     KeyboardInterface, MemInterface, Memory, MemoryKeyboard, RAM, ROM, SCREEN_OFFSET, SCREEN_SIZE, SubMemory,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^                ^^^^^^  ^^^^^^^^^^^^^^  ^^^  ^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemInterface`
[INFO] [stdout]  --> src/cpu/cpu.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 |     KeyboardInterface, MemInterface, Memory, MemoryKeyboard, RAM, ROM, SCREEN_OFFSET, SCREEN_SIZE, SubMemory,
[INFO] [stdout]   |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `outM`, `writeM`, and `addrM` are never read
[INFO] [stdout]   --> src/cpu/cpu.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct CPUOutput {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 13 |     outM:           u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 14 |     writeM:         bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     addrM:          u16,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `inM` should have a snake case name
[INFO] [stdout]  --> src/cpu/cpu.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     inM:            u16,
[INFO] [stdout]   |     ^^^ help: convert the identifier to snake case: `in_m`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `outM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     outM:           u16,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `out_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `writeM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     writeM:         bool,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `write_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `addrM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     addrM:          u16,
[INFO] [stdout]    |     ^^^^^ help: convert the identifier to snake case: `addr_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MemInterface`
[INFO] [stdout]  --> src/cpu/cpu.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 |     KeyboardInterface, MemInterface, Memory, MemoryKeyboard, RAM, ROM, SCREEN_OFFSET, SCREEN_SIZE, SubMemory,
[INFO] [stdout]   |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `A` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     A: u16,
[INFO] [stdout]    |     ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `D` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     D: u16,
[INFO] [stdout]    |     ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `PC` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     PC: u16,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case: `pc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ALU` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     ALU: u16,
[INFO] [stdout]    |     ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpuTick` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn cpuTick( inp: CPUInput, state: CPUState ) -> (CPUState, bool, u16) {
[INFO] [stdout]    |        ^^^^^^^ help: convert the identifier to snake case: `cpu_tick`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ALU` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let (ALU, flags) = alu(state.D, a, bits.op);
[INFO] [stdout]    |          ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let mut D = state.D;
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpuTock` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn cpuTock(inp: CPUInput, state: &mut CPUState) -> (CPUOutput, CPUState) {
[INFO] [stdout]    |        ^^^^^^^ help: convert the identifier to snake case: `cpu_tock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `PC` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let PC = match inp.reset {
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case: `pc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:107:13
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let mut A: u16 = state.A;
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `aluOut` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |     let aluOut = alu(state.D, a, bits.op);
[INFO] [stdout]     |         ^^^^^^ help: convert the identifier to snake case: `alu_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ALU` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let ALU = aluOut.0;
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `outM`, `writeM`, and `addrM` are never read
[INFO] [stdout]   --> src/cpu/cpu.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct CPUOutput {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 13 |     outM:           u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 14 |     writeM:         bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 15 |     addrM:          u16,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `inM` should have a snake case name
[INFO] [stdout]  --> src/cpu/cpu.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     inM:            u16,
[INFO] [stdout]   |     ^^^ help: convert the identifier to snake case: `in_m`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `outM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     outM:           u16,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `out_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `writeM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     writeM:         bool,
[INFO] [stdout]    |     ^^^^^^ help: convert the identifier to snake case: `write_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `addrM` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     addrM:          u16,
[INFO] [stdout]    |     ^^^^^ help: convert the identifier to snake case: `addr_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `A` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     A: u16,
[INFO] [stdout]    |     ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `D` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     D: u16,
[INFO] [stdout]    |     ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `PC` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     PC: u16,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case: `pc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `ALU` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     ALU: u16,
[INFO] [stdout]    |     ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpuTick` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn cpuTick( inp: CPUInput, state: CPUState ) -> (CPUState, bool, u16) {
[INFO] [stdout]    |        ^^^^^^^ help: convert the identifier to snake case: `cpu_tick`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ALU` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 |     let (ALU, flags) = alu(state.D, a, bits.op);
[INFO] [stdout]    |          ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `D` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let mut D = state.D;
[INFO] [stdout]    |             ^ help: convert the identifier to snake case: `d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpuTock` should have a snake case name
[INFO] [stdout]   --> src/cpu/cpu.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn cpuTock(inp: CPUInput, state: &mut CPUState) -> (CPUOutput, CPUState) {
[INFO] [stdout]    |        ^^^^^^^ help: convert the identifier to snake case: `cpu_tock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `PC` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let PC = match inp.reset {
[INFO] [stdout]     |         ^^ help: convert the identifier to snake case: `pc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:107:13
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let mut A: u16 = state.A;
[INFO] [stdout]     |             ^ help: convert the identifier to snake case: `a`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `aluOut` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |     let aluOut = alu(state.D, a, bits.op);
[INFO] [stdout]     |         ^^^^^^ help: convert the identifier to snake case: `alu_out`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `ALU` should have a snake case name
[INFO] [stdout]    --> src/cpu/cpu.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let ALU = aluOut.0;
[INFO] [stdout]     |         ^^^ help: convert the identifier to snake case: `alu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]     --> src/vm/main.rs:1101:3
[INFO] [stdout]      |
[INFO] [stdout]  158 | impl Vm {
[INFO] [stdout]      |         - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout]  325 |                     if *n_vars as i32 < { 0 || *n_vars > 32767 {
[INFO] [stdout]      |                                         - this delimiter might not be properly closed...
[INFO] [stdout] ...
[INFO] [stdout]  332 |                 }
[INFO] [stdout]      |                 - ...as it matches this but it has different indentation
[INFO] [stdout] ...
[INFO] [stdout] 1101 | }
[INFO] [stdout]      |  ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hacksimulators` (bin "vm") due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: this file contains an unclosed delimiter
[INFO] [stdout]     --> src/vm/main.rs:1101:3
[INFO] [stdout]      |
[INFO] [stdout]  158 | impl Vm {
[INFO] [stdout]      |         - unclosed delimiter
[INFO] [stdout] ...
[INFO] [stdout]  325 |                     if *n_vars as i32 < { 0 || *n_vars > 32767 {
[INFO] [stdout]      |                                         - this delimiter might not be properly closed...
[INFO] [stdout] ...
[INFO] [stdout]  332 |                 }
[INFO] [stdout]      |                 - ...as it matches this but it has different indentation
[INFO] [stdout] ...
[INFO] [stdout] 1101 | }
[INFO] [stdout]      |  ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hacksimulators` (bin "vm" test) due to 1 previous error
[INFO] [stdout] error[E0277]: the trait bound `u16: Neg` is not satisfied
[INFO] [stdout]   --> tests/cpu/memory.rs:31:33
[INFO] [stdout]    |
[INFO] [stdout] 31 |     assert_eq!(memory.get(300), -1);
[INFO] [stdout]    |                                 ^^ the trait `Neg` is not implemented for `u16`
[INFO] [stdout]    |
[INFO] [stdout] help: consider specifying an integer type that can be negative
[INFO] [stdout]    |
[INFO] [stdout] 31 |     assert_eq!(memory.get(300), -1i16);
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `u16: Neg` is not satisfied
[INFO] [stdout]   --> tests/cpu/memory.rs:32:32
[INFO] [stdout]    |
[INFO] [stdout] 32 |     assert_eq!(memory.get(-1), -1);
[INFO] [stdout]    |                                ^^ the trait `Neg` is not implemented for `u16`
[INFO] [stdout]    |
[INFO] [stdout] help: consider specifying an integer type that can be negative
[INFO] [stdout]    |
[INFO] [stdout] 32 |     assert_eq!(memory.get(-1), -1i16);
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `u16: Neg` is not satisfied
[INFO] [stdout]    --> tests/cpu/memory.rs:148:33
[INFO] [stdout]     |
[INFO] [stdout] 148 |     assert_eq!(submem.get(100), -1);
[INFO] [stdout]     |                                 ^^ the trait `Neg` is not implemented for `u16`
[INFO] [stdout]     |
[INFO] [stdout] help: consider specifying an integer type that can be negative
[INFO] [stdout]     |
[INFO] [stdout] 148 |     assert_eq!(submem.get(100), -1i16);
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `u16: Neg` is not satisfied
[INFO] [stdout]    --> tests/cpu/memory.rs:149:32
[INFO] [stdout]     |
[INFO] [stdout] 149 |     assert_eq!(submem.get(-1), -1);
[INFO] [stdout]     |                                ^^ the trait `Neg` is not implemented for `u16`
[INFO] [stdout]     |
[INFO] [stdout] help: consider specifying an integer type that can be negative
[INFO] [stdout]     |
[INFO] [stdout] 149 |     assert_eq!(submem.get(-1), -1i16);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hacksimulators` (test "cpu") due to 4 previous errors
[INFO] running `Command { std: "docker" "inspect" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e", kill_on_drop: false }`
[INFO] [stdout] d6d0433187538c4eb8690b76c9248e1be834f9460828c09953146aa4f098527e
